/**
 * 微信支付工具类
 */

/**
 * 发起小程序支付
 * @param {Object} payParams 支付参数
 * @param {Function} successCallback 成功回调
 * @param {Function} failCallback 失败回调
 */
export function launchMiniAppPay(payParams, successCallback, failCallback) {
  uni.requestPayment({
    provider: 'wxpay',
    timeStamp: payParams.timeStamp,
    nonceStr: payParams.nonceStr,
    package: payParams.package,
    signType: payParams.signType,
    paySign: payParams.paySign,
    success: (res) => {
      console.log('支付成功', res)
      if (typeof successCallback === 'function') {
        successCallback(res)
      }
    },
    fail: (err) => {
      console.log('支付失败', err)
      if (typeof failCallback === 'function') {
        failCallback(err)
      }
    }
  })
}

/**
 * 生成订单号
 * @returns {String} 订单号
 */
export function generateOrderNo() {
  const now = new Date()
  return 'WX' + now.getFullYear() +
    padZero(now.getMonth() + 1) +
    padZero(now.getDate()) +
    padZero(now.getHours()) +
    padZero(now.getMinutes()) +
    padZero(now.getSeconds()) +
    padZero(now.getMilliseconds(), 3) +
    Math.floor(Math.random() * 1000).toString().padStart(3, '0')
}

/**
 * 数字补零
 * @param {Number} num 数字
 * @param {Number} length 长度，默认为2
 * @returns {String} 补零后的字符串
 */
export function padZero(num, length = 2) {
  return String(num).padStart(length, '0')
}

/**
 * 元转分
 * @param {Number|String} amount 金额（元）
 * @returns {Number} 金额（分）
 */
export function yuanToFen(amount) {
  return Math.floor(parseFloat(amount) * 100)
}

/**
 * 分转元
 * @param {Number} fen 金额（分）
 * @returns {String} 金额（元）
 */
export function fenToYuan(fen) {
  return (fen / 100).toFixed(2)
} 